Algoritmos Genéticos Simples, pseudocódigo
y ejemplo
Agustín García Romero
ITESM. Paseo de la Reforma, Lomas de Cuernavaca.
Cuernavaca, Mor
E-Mail: [email protected]
http://www.mor.itesm.mx/~al374654
Marzo 1999
Los Algoritmos Genéticos (AG) fueron desarrollados por Jhon Holland[]
y propuestos como herramientas en la solución de problemas de optimización
y de búsqueda.
Los AG constan de tres operadores básicos: cruza, mutación
y selección.1
Los cuales son aplicados a una población de individuos, donde cada
uno de ellos representa una posible solución.
1 Pseudocódigo de un AG[]
-
Generar una población inicial.
-
Evaluar la función de aptitud de cada individuo.
-
Determinar el porcentaje de aptitud de la población.
Repetir
-
Seleccionar individuos a reproducir.
-
Aparear individuos aleatoriamente.
-
Aplicar operador de cruza.
-
Aplicar operador de mutación.
-
Evaluar aptitud de cada individuo.
-
Determinar porcentaje de la función de aptitud de la población.
-
Hasta que se cumpla la condición de término.
Corrida de escritorio de un AG
Problema:
Maximizar la función f(x) = x2 tal que 0 £
x £ 31 usando AG's
Codificación de las variables como una cadena de tamaño
finito:
Sea dicha cadena un entero binario sin signo de longitud 5 -secuencia
de 0's y 1's-.
Entonces podremos representar valores decimales en el rango 0-31.
Para calcular la función de aptitud o función objetivo
simplemente decodificamos el individuo y lo elevamos al cuadrado -x2-.
i) Generar la población inicial
ea la población mostrada en la siguiente tabla una población
generada aleatoriamente.
ii) Evaluar la función de aptitud de cada individuo.
iii) Determinar porcentaje de aptitud de la población.
Generación 1
G1.1) Seleccionar individuos a reproducir
La selección se puede realizar usando una ruleta ''cargada'',
con ello se logra que en la siguiente generación -probabilísticamente-
solo permanezcan los individuos con mayor función de aptitud -mas
cercanos a la función objetivo.
Nueva generación
G1.2) Aparear individuos aleatoriamente
Sean por ejemplo:
11000 y
10011
dos individuos seleccionados en forma aleatoria.
G1.3) Aplicar operador de cruza
Seleccionar aleatoriamente un sitio de cruza
G1.4) Aplicar operador de mutación
Supóngase que la mutación tiene una probabilidad alta
-P(m) = 1-, esto significa que depués de la cruza los nuevos individuos
mutarán una posición seleccionada aleatoriamente.
G1.5) Evaluar función de aptitud de los nuevos individuos
Si tal función es mejor que sus progenitores, entonces agregarlos
a la población -eliminando a los padres-
Dado que 11010 es mejor que sus predecesores, es insertado en la población
sustituyendo a 10011.
Nueva población
G1.6) Determinar porcentaje de la función de aptitud de
la población.
Generación 2
G2.1) Seleccionar individuos a reproducir
Nueva generación
G2.2) Aparear individuos aleatoriamente
Sean por ejemplo:
11010 y
10011
G2.3) Aplicar operador de cruza
Seleccionar aleatoriamente un sitio de cruza
G2.4) Aplicar operador de mutación
G2.5) Evaluar función de aptitud de los nuevos individuos
Dado que la funcióm de aptitud de 11111 es el máximo que
estamos buscando, se cumple la condición de paro y el algoritmo
termina.
References
-
[]
-
http://www.irdg.com/mep/nni/genealgo.txt
-
[]
-
Genetic Algotrithms ...
Footnotes:
1 Ver la
referencia de Goldberg para una mejor descripción de tales operadores.
File translated from TEX by TTH,
version 2.20.
On 7 May 1999, 20:28.